package attori.attuatori;

import gui.houseeditor.Stanza;
import sde.actor.Actor;
import sde.actor.Message;

public class AttuatoreTemperatura extends Actor implements
		AttuatoreTemperaturaIF {

	public static final byte CREATED=0, IDLE = 1, OPERATIVE = 2;
	private Stanza stanza;

	public AttuatoreTemperatura() {
		become(CREATED);
	}

	@Override
	protected void handler(Message m) {
		switch (currentStatus()) {
		case CREATED:
			if (m instanceof Init) {
				this.stanza = ((Init) m).stanza;
				become(IDLE);
			}
			break;
		case IDLE:
			if (m instanceof Aumenta) {
				stanza.setTemperatura(stanza.getTemperatura()
						+ ((Aumenta) m).quantita);
			} else if (m instanceof Diminuisci) {
				stanza.setTemperatura(stanza.getTemperatura()
						- ((Diminuisci) m).quantita);
			}
			become(OPERATIVE);
			break;
		case OPERATIVE:
			if (m instanceof ToIdle)
				become(IDLE);
			else if (m instanceof Aumenta) {
				stanza.setTemperatura(stanza.getTemperatura()
						+ ((Aumenta) m).quantita);
			} else if (m instanceof Diminuisci) {
				stanza.setTemperatura(stanza.getTemperatura()
						- ((Diminuisci) m).quantita);
			}
			break;
		}
	}
}
